package com.qf.controller;

import com.github.tobato.fastdfs.domain.StorePath;
import com.github.tobato.fastdfs.service.FastFileStorageClient;
import com.qf.entity.Goods;
import com.qf.entity.GoodsSeckill;
import com.qf.service.SecKillService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

@Controller
@RequestMapping("/backseckill")
public class SecKillController {

    @Autowired
    private SecKillService secKillService;

    @Autowired
    private FastFileStorageClient client;
    
    /**
     * 展示所有的秒杀商品
     */
    @RequestMapping("/list")
    public String list(Model model){

        //获得商品列表
        List<Goods> goodsList = secKillService.goodsList();
        System.out.println("后台服务查询商品信息：" + goodsList);
        model.addAttribute("goodsList", goodsList);

        return "seckilllist";
    }

    /**
     * 添加秒杀商品
     *
     * 图片上传
     *
     * 问题：到底上传到哪里去？
     * 1、上传到tomcat的相对路径中，这样可以直接通过tomcat访问到图片
     * 2、上传到服务器的本地路径
     *
     * 集群环境下：
     * 分布式文件系统

     */
    @RequestMapping("/insert")
    public String insert(MultipartFile file, Goods goods, GoodsSeckill goodsSeckill){

        System.out.println("上传的图片信息：" + file.getOriginalFilename() + "  " + file.getSize());
        //服务接收到客户端的上传图片，需要进行存储，并且将图片的存储地址保存到数据库中，方便客户端下次访问

        //TODO 将图片上传到FastDFS服务器
        String imgPath = null;
        try {
            StorePath path = client.uploadImageAndCrtThumbImage(file.getInputStream(), file.getSize(), "jpg", null);
            imgPath = "http://192.168.1.105:8080/" + path.getFullPath();
            goods.setImages(imgPath);
        } catch (IOException e) {
            e.printStackTrace();
        }

        int result = secKillService.insertGoods(goods, goodsSeckill);
        //表示添加完成商品后，重定向回商品列表页面
        return "redirect:/backseckill/list";
    }
}
